\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=5em,semithick]
    \tikzstyle{every state}=[text=black]
    \tikzset{nearnodes/.style={node distance=2em}}

    \node[state] (1) {1};
    \node[state] (2) [right of=1] {2};
    \node[state] (3) [right of=2] {3};
    \node[nearnodes] (+) [above left of=1] {+};
    \node[nearnodes] (-3) [right of=3] {-};
    \node[nearnodes] (-1) [below left of=1] {-};

    \path (1) edge node {b} (2)
        (2) edge node {d} (3)
        (2) edge [loop above] node {b} (2)
        (1) edge [loop above] node {a} (1);
\end{tikzpicture}